//package com.cj.user.service.mybatis;
//
//import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
//import org.springframework.beans.factory.config.BeanDefinition;
//import org.springframework.beans.factory.config.BeanDefinitionHolder;
//import org.springframework.beans.factory.support.BeanDefinitionRegistry;
//import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;
//
//import java.util.Set;
//
///**
// * @Author cheng jun
// * @Description:
// * @Date 2021/7/18 23:24
// */
//public class ScannerDemo extends ClassPathBeanDefinitionScanner {
//
//    public ScannerDemo(BeanDefinitionRegistry registry) {
//        super(registry);
//    }
//
//    @Override
//    public int scan(String... basePackages) {
//        int scan = super.scan(basePackages);
//        System.out.println("扫描接口的个数：" + scan);
//        return scan;
//    }
//
//    @Override
//    protected Set<BeanDefinitionHolder> doScan(String... basePackages) {
//        Set<BeanDefinitionHolder> beanDefinitionHolders = super.doScan(basePackages);
//        for (BeanDefinitionHolder beanDefinitionHolder : beanDefinitionHolders) {
//            BeanDefinition beanDefinition = beanDefinitionHolder.getBeanDefinition();
//            beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(beanDefinition.getBeanClassName());
//            beanDefinition.setBeanClassName(com.kanq.service.mybatis.FactoryBeanDemo.class.getName());
//        }
//        return beanDefinitionHolders;
//    }
//
//    @Override
//    protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) {
//        return beanDefinition.getMetadata().isInterface();
//    }
//}
